#ifndef TRANSFORMATION_H
#define TRANSFORMATION_H

// pg 167 in ebook
#include "SceneGraphHeader.h"

// converted to directx.
class DXTransformation
{
public:
	// Member Vars
	static const DXTransformation IDENTITY;
	// Constructor
	DXTransformation ();
	~DXTransformation ();

	// Member Functions
	D3DXMATRIX ApplyForward (const D3DXMATRIX& rInput) const; // pg 173
	void ApplyForward ();// not done
	void MakeIdentity ();
	void MakeUniScale ();
	bool IsIdentity () const;
	bool IsUniformScale () const;
	void SetRotate ( D3DXMATRIX& rRotate ); // sets m_bIsIdentity to false
	const D3DXMATRIX& GetRotate () const; // read-only
	void SetTranslate ( D3DXMATRIX& rTranslate ); // sets m_bIsIdentity to false
	const D3DXMATRIX& GetTranslate () const; // read-only
	void SetScale ( D3DXMATRIX& rScale ); // sets m_bIsIdentity to false
	const D3DXMATRIX& GetScale () const; // read-only
	void SetUniformScale ( float fScale ); // sets m_bIsIdentity, m_bIsUniformScale to false
	float GetUniFormScale (); // read-only
	float GetMinimumScale () const; // read-only
	float GetMaximumScale () const; // read-only
	D3DXMATRIX& Rotate (); // read-write
	D3DXMATRIX& Translate (); // read-write
	D3DXMATRIX& Scale (); // read-write


private:
	// Member Vars
	D3DXMATRIX m_Rotate;
	D3DXMATRIX m_Translate;
	D3DXMATRIX m_Scale;
	bool m_bIsIdentity, m_bIsUniformScale;

};

#endif